package com.example.gitzuoye3;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import android.content.SharedPreferences;

/**
 * 用户注册Activity，处理新用户注册逻辑
 */
public class zhuce1 extends AppCompatActivity {

    private EditText username_R, pwd1_R, pwd2_R; // 用户名和密码输入框
    private Button submit_R;                    // 提交按钮
    private SQL mysql;                         // 数据库帮助类
    private SQLiteDatabase db;                // 数据库对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.zhuce);

        // 1. 初始化视图
        initViews();

        // 2. 初始化数据库
        initDatabase();

        // 3. 设置注册按钮点击事件
        setupRegisterButton();
    }

    /**
     * 初始化视图组件
     */
    private void initViews() {
        username_R = findViewById(R.id.username_R);
        pwd1_R = findViewById(R.id.zhucemima);
        pwd2_R = findViewById(R.id.zhucemima2);
        submit_R = findViewById(R.id.zhuce2);
    }

    /**
     * 初始化数据库连接
     */
    private void initDatabase() {
        try {
            mysql = new SQL(this);
            db = mysql.getWritableDatabase();
        } catch (Exception e) {
            Log.e("Database", "初始化失败", e);
            Toast.makeText(this, "数据库初始化失败", Toast.LENGTH_SHORT).show();
            finish();
        }
    }

    /**
     * 设置注册按钮点击事件
     */
    private void setupRegisterButton() {
        submit_R.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 1. 获取输入值
                String username = username_R.getText().toString().trim();
                String password = pwd1_R.getText().toString().trim();
                String confirmPwd = pwd2_R.getText().toString().trim();

                // 2. 验证输入
                if (!validateInput(username, password, confirmPwd)) {
                    return;
                }

                // 3. 注册用户
                registerUser(username, password);
            }
        });
    }

    /**
     * 验证用户输入
     * @param username 用户名
     * @param password 密码
     * @param confirmPwd 确认密码
     * @return 输入是否有效
     */
    private boolean validateInput(String username, String password, String confirmPwd) {
        if (username.isEmpty() || password.isEmpty()) {
            Toast.makeText(this, "用户名和密码不能为空", Toast.LENGTH_SHORT).show();
            return false;
        }

        if (!password.equals(confirmPwd)) {
            Toast.makeText(this, "两次密码输入不一致", Toast.LENGTH_SHORT).show();
            return false;
        }

        return true;
    }

    /**
     * 注册新用户
     * @param username 用户名
     * @param password 密码
     */
    private void registerUser(String username, String password) {
        Cursor cursor = null;
        try {
            // 1. 检查用户名是否已存在
            cursor = db.query(
                    "logins",
                    new String[]{"username"},
                    "username=?",
                    new String[]{username},
                    null, null, null);

            if (cursor.getCount() > 0) {
                Toast.makeText(this, "用户名已存在", Toast.LENGTH_SHORT).show();
                return;
            }

            // 2. 插入新用户
            ContentValues values = new ContentValues();
            values.put("username", username);
            values.put("password", password);

            long result = db.insert("logins", null, values);

            if (result != -1) {
                // 3. 保存用户名到用户资料
                SharedPreferences profilePrefs = getSharedPreferences("user_profile", MODE_PRIVATE);
                profilePrefs.edit().putString("username", username).apply();

                Toast.makeText(this, "注册成功", Toast.LENGTH_SHORT).show();
                finish(); // 返回登录界面
            } else {
                Toast.makeText(this, "注册失败", Toast.LENGTH_SHORT).show();
            }
        } catch (Exception e) {
            Log.e("Register", "注册错误", e);
            Toast.makeText(this, "注册时发生错误: " + e.getMessage(), Toast.LENGTH_LONG).show();
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 关闭数据库连接
        try {
            if (db != null && db.isOpen()) {
                db.close();
            }
            if (mysql != null) {
                mysql.close();
            }
        } catch (Exception e) {
            Log.e("zhuce1", "关闭数据库时出错", e);
        }
    }
}